#include "errorcodesview.h"

#include <QLabel>
#include "databaseinstancemngr.h"
#include "dbquerymodulelist.h"
#include <QDebug>


ErrorCodesView::ErrorCodesView(QWidget *parent) : QSplitter(Qt::Vertical, parent)
{
  pErrorCodesWidget = 0;
  pErrorCodeDescriptionView = 0;
}

ErrorCodesView::~ErrorCodesView()
{
}

void ErrorCodesView::createPanel()
{
/*************************************************************************************************************
stretch factor это значение, которое указывает на то какую часть свободной площади будет занимать виджет
по отношению к другим виджетам. Например если поставить одному фрейму horizontalStretch 1,
а второму фрему 2. То первый будет занимать 1/3 свободной площади, а второй фрейм 2/3 свободной площади.
Ты не обязан задавать этот фактор через сплиттер, можешь тупо прописать его в свойствах фреймов в дизайнере.
*************************************************************************************************************/

   this->addWidget(createErrorCodesTable());
   this->addWidget(createErrorCodeDescriptionWidget());
   this->setStretchFactor(0,7);
   this->setStretchFactor(1,1);
}

ErrorCodesWidget *ErrorCodesView::createErrorCodesTable()
{
  if(pErrorCodesWidget == NULL) {
    pErrorCodesWidget = (ErrorCodesWidget*)new ErrorCodesWidget(this);
/* connection to the DB MUST be created */
    DataBaseInstanceMngr *pdbinstmngr = DataBaseInstanceMngr::getDataBaseInstanceMngr();
    DatabaseManager *pdbmngr = pdbinstmngr->getDatabaseManager(SC_ERROR_CODE_DB_NAME);
    mysqlquery::dbquerymodulelist l_query;
    ListQVariant lv = pdbmngr->query(l_query.getSqlQuery());

    pErrorCodesWidget->setModuleList(l_query.getModuleList(lv));
    pErrorCodesWidget->buildWidget();

    connect(pErrorCodesWidget->getErrorCodesTableView(), SIGNAL(setErrorCode(const Errorcode &)),
            this, SLOT(setErrorCodeRecieve(const Errorcode &)));

  }
  return pErrorCodesWidget;
}

ErrorCodeDescriptionView *ErrorCodesView::createErrorCodeDescriptionWidget()
{
  if(pErrorCodeDescriptionView == 0) {
    pErrorCodeDescriptionView = new ErrorCodeDescriptionView(this);
  }
  return pErrorCodeDescriptionView;
}

void ErrorCodesView::setErrorCodeRecieve(const Errorcode &errorcode)
{
//  qDebug() << "ErrorCodesView::setErrorCode()";
  pErrorCodeDescriptionView->setErrorCode(errorcode);
}
